<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
		<script src="./scripts/vue.js"></script>
		<!-- 1. 引入js库 -->
		<script src="./scripts/vue-router_3.0.2.js"></script>
	</head>
	<body>
		<!--    声明式导航：通过点击链接实现导航的方式 -->
		<!-- ★ 编程式导航：通过点击链接实现导航的方式 -->

		<div id="app">
			<!-- 2. 创建路由标签 -->
			<router-link to="/shopList/5">商品列表</router-link>
			<router-link to="/register">注册</router-link>

			<!-- 3. 创建路由占位符、填充位 -->
			<router-view></router-view>
		</div>

		<script>
			// 4. 创建组件
			var ShopList = {
				// 使用 $route.params.id 方法访问到动态路由的实际值
				template: `
			   <div>
			     <h4>商品详情</h4>
			     <button @click="handle">前进</button>
			   </div>
			 `,
				created() {
					// 可以在钩子函数中使用实例的方式来获取到传递的参数
					console.log(this.$route.params.id)
				},
				methods: {
					handle() {
						// push() 方法实现跳转
						this.$router.push('/register')
					}
				}
			}
			var Register = {
				template: `
			       <div>
			         <h4>注册</h4>
			         <button @click="goBack">后退</button>
			         <button @click="goShopList">到商品列表</button>
			       </div>
			     `,
				methods: {
					goBack() {
						// go() 方法实现回退
						this.$router.go(-1)
					},
					goShopList() {
						this.$router.push({ name: 'ShopList', params: { id: 5 } })
					}
				}
			}
			// 5. 创建路由规则
			var router = new VueRouter({
				// 配置路由规则
				routes: [
					{ path: '/', redirect: '/register' },

					// 建议： name 名字要么和 path 一样，要么和 component 一样
					{ path: '/shopList/:id', component: ShopList, name: 'ShopList' },
					{ path: '/register', component: Register, name: 'Register' }
				]
			})

			var vm = new Vue({
				el: '#app',
				data: {},
				// 6. 将 vue-router 规则挂载到 Vue 实例中
				router
			})
		</script>
	</body>
</html>
